#pragma once

#include "database.h"
/*!
 * \brief 声明文件系统日志类
 */
class FerryLog;
extern FerryLog *ferryLog;


/*!
 * \brief 用户登陆日志类
 * {"UserID":"data","Privilege":"data,"Mac":"data,"Type":"data,"Time":"data"}
 */
class FerryLog : public DataBase {
    Q_OBJECT
public:
    /*!
     * \brief LoginLog 构造函数
     */
    FerryLog();
    /*!
     * \brief addLoginLog 添加记录
     * \param records 记录
     * \return 添加状态
     */
    Q_INVOKABLE const bool addFerryLog(const QVariantMap &records, const QString tableName) {
        return addFerryRecord(tableName, records);
    }
    // /*!
    //  * \brief queryLoginLogCount 查询日志条数
    //  * \return 格式日志条数
    //  */
    // Q_INVOKABLE const int queryLoginLogCount() {
    //     return queryRecordCount(getTableName());
    // }
    // /*!
    //  * \brief queryLoginPagingLog 分页查询日志
    //  * \return 日志
    //  */
    // Q_INVOKABLE const QVariant queryLoginPagingLog(int page, int count) {
    //     return queryPagingRecord(getTableName(), page, count);
    // }
    /*!
     * \brief queryLoginAllLog 查询所有记录
     * \return 日志
     */
    Q_INVOKABLE const QVariant queryAllLog(const QString tableName) {
        return queryFerryAllRecord(tableName);
    }
    // /*!
    //  * \brief getDbName 获取数据库名称
    //  * \return 数据库名称
    //  */
    Q_INVOKABLE QString getDbName() {
        return "ferrylog";
    }

    void isSqliteCipherLoaded();
private:
    /*!
     * \brief getConnectName 获取连接名称
     * \return 连接名称
     */
    QString getConnectName() {
        return "ferrylog";
    }
    /*!
     * \brief getTableName 获取表名称
     * \return 表名称
     */
    const QString getTableName() {
        return tablename;
    }
    /*!
     * \brief setTableName 设置表名称
     * \param tablename 表名
     * \return 表名称
     */
    void setTableName(QString tablename){
        this->tablename = tablename;
    }
    /*!
     * \brief init 初始化
     */
    void init();
    const QString getPassword(){
        return "123456";
    }
    QString tablename;
};
